home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / misc / amag / sh9301e.lha / Maxon-CPP-Demo / AREXX / CmdShell.ed next >
Text File  |  1993-02-17  |  2KB  |  90 lines

  1.  
  2. /** $VER: CmdShell.ttx 1.0 (31.12.90)
  3.  **
  4.  ** TurboText's command shell
  5.  **
  6.  ** Original by David N. Junod
  7.  ** Modified by Bill Hawes
  8.  ** Modified by Martin Taillefer
  9.  **/
  10.  
  11.  
  12. OPTIONS RESULTS
  13. OPTIONS FAILAT 100
  14. OPTIONS PROMPT "Cmd> "
  15.  
  16.  
  17.   /* Display instructions */
  18.   SAY 'Enter commands, or press CTRL-\ to exit.'
  19.  
  20.   /* Get input until the user closes the Command Shell */
  21.   DO FOREVER
  22.  
  23.     /* Wait until the user types a command followed by RETURN */
  24.     PARSE PULL cmdString
  25.  
  26.     SELECT
  27.       WHEN (cmdString = "") | (UPPER(cmdString) = "Q") | (UPPER(cmdString) = "QUIT") THEN DO
  28.         LEAVE
  29.       END
  30.  
  31.       WHEN (cmdString = "?") | (UPPER(cmdString) = "HELP") THEN DO
  32.         SAY 'Enter "HELP <command>" to obtain a command''s template.'
  33.         SAY 'Enter CTRL-\ to close this window.'
  34.       END;
  35.  
  36.       OTHERWISE DO
  37.         CALL HandleCmd(cmdString)
  38.       END;
  39.  
  40.     END
  41.   END
  42.  
  43.   RETURN
  44.  
  45.  
  46. HandleCmd: PROCEDURE
  47. PARSE ARG cmdString
  48.  
  49.   /* Execute the command */
  50.   cmdString
  51.  
  52.   /* See if the command succeeded */
  53.   IF RC = 0 THEN DO
  54.     IF symbol('RESULT') == "VAR" THEN DO
  55.       SAY RESULT
  56.     END
  57.     RETURN
  58.   END
  59.  
  60.   /* Wasn't an editor command, try running it as an ARexx script */
  61.   IF TurboText.LastError = 29 THEN DO
  62.     ADDRESS REXX cmdString
  63.  
  64.     /* Wasn't an ARexx script, try running it as a CLI command */
  65.     IF RC > 0 THEN DO
  66.       ADDRESS COMMAND cmdString
  67.     END
  68.  
  69.   END; ELSE DO
  70.     IF RC > 0 THEN DO
  71.       last    = TurboText.LastError
  72.       special = TurboText.SpecialError
  73.  
  74.       GetErrorInfo TurboText.LastError
  75.       IF RC = 0 THEN
  76.         msg = RESULT
  77.       ELSE DO
  78.         msg = ""
  79.       END
  80.  
  81.       SAY '*** Error #'last';'msg
  82.       IF special ~= 0 THEN DO
  83.         SAY '*** Special error 'special
  84.       END
  85.     END
  86.   END
  87.  
  88.   RETURN
  89. /* end of HandleCmd() */
  90.